home *** CD-ROM | disk | FTP | other *** search
- /*
- * MandelVroom 2.0
- *
- * (c) Copyright 1987,1989 Kevin L. Clague, San Jose, CA
- *
- * All rights reserved.
- *
- * Permission is hereby granted to distribute this program's source
- * executable, and documentation for non-comercial purposes, so long as the
- * copyright notices are not removed from the sources, executable or
- * documentation. This program may not be distributed for a profit without
- * the express written consent of the author Kevin L. Clague.
- *
- * This program is not in the public domain.
- *
- * Fred Fish is expressly granted permission to distribute this program's
- * source and executable as part of the "Fred Fish freely redistributable
- * Amiga software library."
- *
- * Permission is expressly granted for this program and it's source to be
- * distributed as part of the Amicus Amiga software disks, and the
- * First Amiga User Group's Hot Mix disks.
- *
- * contents: this file contains the function that calculates the
- * Mandelbrot/Julia caluclation in 68881 assembly. This funtion needs
- * work, so that it is all assembly instead of C and assembly.
- */
-
- #include "mandp.h"
- #include "parms.h"
-
- Height_68881( p )
- struct PotentialParms *p;
- {
- register LONG k;
- register double *P;
-
- k = p->MaxIteration;
-
- P = (double *) p;
-
- #asm
- ; mc68881
- ;
- ;four equ fp1
- ;curx equ fp2
- ;cury equ fp3
- ;cura equ fp4
- ;curb equ fp5
- ;cura2 equ fp6
- ;curb2 equ fp7
- ;
- ;
- ; set up modulus
- fmove.d #"$4010000000000000",fp1
- ;
- ; move posx and posy into fp4 and fp5
- ; move curx and cury into fp2 and fp3
- ;
- fmove.d (a2)+,fp4
- fmove.d (a2)+,fp5
- fmove.d (a2)+,fp2
- fmove.d (a2),fp3
- ;
- fmove.x fp4,fp6
- fmove.x fp5,fp7
- fmul.x fp6,fp6
- fmul.x fp7,fp7
- Loop
- ;
- ; curb *= cura;
- ; curb += curb + cury;
- fmul.x fp4,fp5
- fadd.x fp5,fp5
- fadd.x fp3,fp5
- ;
- ; cura = cura2 - curb2 + curx
- fsub.x fp7,fp6
- fadd.x fp2,fp6
- ;
- ; curb2 = curb * curb;
- fmove.x fp5,fp7
- fmul.x fp5,fp7
- ;
- ; cura2 = cura * cura;
- fmove.x fp6,fp4
- fmul.x fp6,fp6
- ;
- ; if (cura2+curb2 > 4.0)
- ; return( k );
- fmove.x fp6,fp0
- fadd.x fp7,fp0
- fcmp.x fp1,fp0
- fdbgt d4,Loop
- ; addq.l #2,d4
- ;
- #endasm
- ;
- return( p->MaxIteration - k );
- }
-